package com.chushouya.manager.service.admin;


import com.chushouya.manager.dto.admin.config.ConfigDTO;
import com.chushouya.manager.dto.admin.config.ConfigListDTO;
import com.chushouya.manager.dto.admin.config.ConfigQuery;
import com.chushouya.manager.dto.admin.config.ConfigSaveDTO;
import com.general.framework.core.schema.PageResult;

import java.util.List;

/**
 * 参数配置
 */
public interface ConfigService {

    /**
     * 查询参数配置信息
     * @param configId 参数配置ID
     * @return 参数配置信息
     */
    ConfigSaveDTO selectConfigById(Long configId);

    /**
     * 根据键名查询参数配置信息
     * @param configKey 参数键名
     * @return 参数键值
     */
    ConfigDTO selectConfigByKey(String configKey);

    /**
     * 查询参数配置列表
     * @return 参数配置集合
     */
    PageResult<ConfigListDTO> selectConfigPageResult(ConfigQuery query);

    /**
     * 新增参数配置
     * @param config 参数配置信息
     * @return 结果
     */
    Long addConfig(ConfigSaveDTO config);

    /**
     * 修改参数配置
     * @param config 参数配置信息
     * @return 结果
     */
    Long editConfig(ConfigSaveDTO config);

    /**
     * 删除参数信息
     * @param configId 需要删除的参数ID
     */
    void removeConfig(Long configId);

    /**
     * 初始化系统参数数据
     */
    void intConfigData();

    /**
     * 加载参数缓存数据
     */
    void loadConfigCache();

    /**
     * 清空参数缓存数据
     */
    void clearConfigCache();

    /**
     * 重置参数缓存数据
     */
    void resetConfigCache();

    /**
     * 获取超级Admin用户ID列表
     */
    List<Long> getSuperAdminUserIdList();


    String getStringConfig(String configKey);
}
